package com.ydd.service.impl;

import com.ydd.entity.YddUser;
import com.ydd.mapper.YddArticleMapper;
import com.ydd.mapper.YddUserDataMapper;
import com.ydd.mapper.YddUserMapper;
import com.ydd.service.UserService;
import com.ydd.vo.UserVO;
import com.ydd.vo.YddUserInfoVO;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.DigestUtils;

/**
 * @Description TODO
 * @Author fang
 * @Date 2023-05-29 16:38
 */
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private YddUserMapper yddUserMapper;
    @Autowired
    private YddArticleMapper yddArticleMapper;
    @Autowired
    private YddUserDataMapper yddUserDataMapper;

    /**
     * 修改用户资料
     * @param userVO
     */
    @Override
    public void update(UserVO userVO) {
        YddUser yddUser = new YddUser();
        BeanUtils.copyProperties(userVO,yddUser);
        String md5 = DigestUtils.md5DigestAsHex(yddUser.getPassword().getBytes());
        yddUser.setPassword(md5);
        yddUserMapper.updateById(yddUser);
    }

    /**
     * 根据id获取用户信息
     * @param yddUserId
     * @return
     */
    @Override
    public YddUserInfoVO getUserInfo(Long yddUserId) {
        //根据id获取用户对象
        YddUser yddUser = yddUserMapper.selectById(yddUserId);
        UserVO userVO = new UserVO();
        BeanUtils.copyProperties(yddUser,userVO);
        //根据用户id获取文章数
        Integer articleNum = yddArticleMapper.getArticleNumByUserId(yddUserId);
        //根据用户id获取文章收藏数
        Integer collectNum = yddUserDataMapper.getCollectNumOrLikeNumByUserId(yddUserId,1);
        //根据用户id获取文章点赞数
        Integer zanNum = yddUserDataMapper.getCollectNumOrLikeNumByUserId(yddUserId,2);

        //返回数据
        return new YddUserInfoVO(articleNum,collectNum,userVO,zanNum);
    }

}
